Impala是Cloudera所推出基於HDFS與HBase的Realtime(?) Query產品,有點像是Hive的感覺,但是速度快很多,目前可使用的查詢語句跟HiveQL一樣,有部分的功能還沒有,像是Hive的Bucket切割。
Impala雖然功能跟Hive很像,不過他並不是設計用來取代Impala,
它與Hive共用MetaStroe,所以如果之前用hive先建立好的Table,就可以直接查詢做使用。
Impala 與 Hadoop的架構
來源網址http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/Installing-and-Using-Impala.html
1.Client
Impala的Clinet提供JDBC與ODBC的接口。
2.Hive metaStore
存放儲存的資訊,提供Impala與Hive使用。
3.Impala
基本上會裝在每台Datanode上,每個imapla程序,都可從Impala的Client接收查詢,計畫要分散運算的流程,各個impala之間會互相合作,並且分散式運算。
Impala的概念與架構
Impala有兩個重要的組件:Impala Daemon 與 Impala Statestore
來源網址http://blog.cloudera.com/blog/2012/10/cloudera-impala-real-time-queries-in-apache-hadoop-for-real/
Impala Daemon
看架構圖中,底下三個都個別代表一個datanode,黃色框框的內容就是impala daemon(後面簡稱impalad)在做的事,當一個query進來的時候,接收到的impalad就會開始剖析查詢的語句,然後將這些查詢的內容儲存在哪個datanode,基本上透過hdfs可以知道。
假設A檔案已經load data到hive裡面,那hive會知道要頗析這個檔案的schema是什麼,hdfs 也知道A檔案有幾個Block並且分別存放在哪幾個datanode裡面,當impala接收到查詢的時候,就會知道該去哪幾個datanode去分散式運算,跟hive不同的是,impala沒有MapReduce。
impala沒有MapReduce
impala沒有MapReduce
impala沒有MapReduce
講三次代表這個觀念有點重要,impala其實就是MPP而已,讀取I/O有特別優化(使用C++)。
Impala Statestore
StateStore用來同步各別impalad的健康狀態,還有hive metadata的資訊更新。
impala沒有單一節點損壞的問題,只要statestore爆掉的時候,沒有任何一台impalad一起爆掉,基本上還是可以進行服務,但是如果有一台也一起爆掉了話,就會產生悲劇。
之前有用Hive來查詢cards的table,明天會示範使用impala查詢,速度絕對會讓各位大吃一驚啦!不過...當資料量大到一定地步的時候..impala還是會比Hive慢就是,因為我只有一台虛擬機,可能無法有很正確的運算數據。